/*
 * Copyright (c) 2010-2013 Ruben Chakhmakhchyan. All rights reserved.
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Eclipse Public License
 * Version 1.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://opensource.org/licenses/EPL-1.0 and read it before using this file.
 */

#pragma once


template<typename T> long lround( T x )
{
    return x > 0 ? ( long ) ( x + 0.5 ): ( long ) ( x - 0.5 );
}

template<typename T> int iround( T x )
{
    return x > 0 ? ( int ) ( x + 0.5 ): ( int ) ( x - 0.5 );
}

template<typename T> long lround( T x, T d )
{
    return x > 0 ? ( long ) ( x + d ): ( long ) ( x - d );
}

template<typename T> int iround( T x, T d )
{
    return x > 0 ? ( int ) ( x + d ): ( int ) ( x - d );
}
